#include <iostream>
#include <thread>
#include <future>
#include <memory>

int Add(int num1, int num2)
{
    std::cout << "into Add" << std::endl;

    return num1 + num2;
}

int main()
{
    // 1.实例化一个指定结果类型的promise对象
    std::promise<int> pro;

    // 2.获取该promise对象关联的future (注意:如果promise对象被释放了 , 那么对其所关联的future的操作会出问题)
    std::future<int> res = pro.get_future();

    // 3.在任意位置给promise对象设置数据 通过其关联的future对象获取该数据

    std::cout << res.get() << std::endl;
    std::thread t([&pro]()
                  {
        int sum=Add(127,210);
        pro.set_value(sum); });

    t.join();
    // std::cout << res.get() << std::endl;
    //  t.join();

    return 0;
}